Dynomotion

Group: DynoMotion Message: 2295 From: bradodarb Date: 11/18/2011
Subject: Feedrate Override Resolution.
Hello Tom,


I am trying to get the beta Machine Manager's CNC buttoned up and some of the remaining functionality I have some questions with.


#1) Interpreter.CoordMotion.SetFeedRateOverride(args...)

What are valid ranges? is 1 = to 100% or do I need to pass in 100?


2#) What is a good clean way to implement spindle override?

My initial thoughts were to query the interpreter's requested S value, then based on user input change the pwm/analog out via script command or compile and run a c prog

What are your thoughts?

-Brad Murry
Group: DynoMotion Message: 2302 From: bradodarb Date: 11/18/2011
Subject: Re: Feedrate Override Resolution.
Looking thru the KMCNC app, I think no feedrate override == 1.0.

I can adjust accordingly.



I am still not sure how to implement a general purpose spindle override routine, and would be eager to hear anyone's suggestions


-Brad Murry



--- In DynoMotion@yahoogroups.com, "bradodarb" <bradodarb@...> wrote:
>
> Hello Tom,
>
>
> I am trying to get the beta Machine Manager's CNC buttoned up and some of the remaining functionality I have some questions with.
>
>
> #1) Interpreter.CoordMotion.SetFeedRateOverride(args...)
>
> What are valid ranges? is 1 = to 100% or do I need to pass in 100?
>
>
> 2#) What is a good clean way to implement spindle override?
>
> My initial thoughts were to query the interpreter's requested S value, then based on user input change the pwm/analog out via script command or compile and run a c prog
>
> What are your thoughts?
>
> -Brad Murry
>
Group: DynoMotion Message: 2303 From: Tom Kerekes Date: 11/18/2011
Subject: Re: Feedrate Override Resolution.
Hi Brad,
 
Regarding Spindle Override:  I'm open for suggestions as well :}
 
Seems tricky as I suppose Spindle speed could change as a result of:
 
#1 GCode
#2 SO Screen Control (slider)
#3 External Pot or Push Button SO connected to KFLOP
#4 CSS (Constant Surface Speed) on a lathe (that we have been trying to add)
 
So let's suppose we assign two UserData Variables in KFLOP as "Current Spindle Speed" and "SpeedOverride Factor" (normally=1.0).
 
The User Spindle.c program would then take this static global SO factor into account whenever commanded to change the Speed (which is currently only possible from a GCode S Command which calls the "InvokeAction S" call).
 
The GUI can read this UserData variable and display the current SO continuously on the screen as well as the Currently Commanded Spindle Speed.  If we make the UserData variables two of the 8 that are continuously uploaded with the BulkStatus then it won't require separate reads through he USB. 
 
If the Operator changes the SO the App would write the changed value to the KFLOP variable first, then also do an InvokeAction S call.
 
Any KFLOP User program could also change the SO variable and execute equivalent InvokeAction S code to alter the Spindle speed in response to a button or Pot change.
 
A KFLOP CSS program could likewise detect changes in the cutting radius and execute equivalent InvokeAction S code factoring in the Curr Commanded Speed, SO, and the Radius.
 
Any thoughts?
 
One thing I don't see how to do is reconcile an external Pot position with a GUI Slider.  Moving the Pot would update the GUI slider to stay in sync, but moving the slider can't physically move the Pot.  Anyone know how this is normally done?  I guess it has to be one or the other.
 
Thanks
TK 
 
 

Group: DynoMotion Message: 2306 From: bradodarb Date: 11/18/2011
Subject: Re: Feedrate Override Resolution.
Tom,

Forgive me if I am oversimplifying things here(as I don't know much about how your code interfaces with the DSP's GPIO:


Is it possible to map scaling factors to analog/PWM inputs and outputs?


This would allow multiple spindles to be overriden individually.



I guess for now I will just poll the Interpreter.Setup's Speed value and fire off an IronPython script to adjust the speed output's value
(unless I am offered a better idea)
___________________________________________________________________

CSS seems like it should be more a function of the interpreter than a user program IMHO.

The CSS should be simple enough(assuming near instantaneous rpm changes relative to the part's diameter change vs feedrate), once you caculate your tool tip's distance from the spindle's axis.


Do you have separte 'Canonical Feed' calls for a mill vs lathe(if not I reckon you would just use a flag for lathe and update the spindle override "InvokeAction S" from common call "InvokeAction G1 or what have you").

Actually, I see where that would fail on long diagonal moves and arc moves, you would need to gradually adjust the speed during interpolation...doh!


I've used some devices that implement axis trip points(abs and delta)

Does Kflop have this ability? If so it would be trivial to refresh the S command on axis delta position changes.

-Brad Murry


--- In DynoMotion@yahoogroups.com, Tom Kerekes <tk@...> wrote:
>
> Hi Brad,
>  
> Regarding Spindle Override:  I'm open for suggestions as well :}
>  
> Seems tricky as I suppose Spindle speed could change as a result of:
>  
> #1 GCode
> #2 SO Screen Control (slider)
> #3 External Pot or Push Button SO connected to KFLOP
> #4 CSS (Constant Surface Speed) on a lathe (that we have been trying to add)
>  
> So let's suppose we assign two UserData Variables in KFLOP as "Current Spindle Speed" and "SpeedOverride Factor" (normally=1.0).
>  
> The User Spindle.c program would then take this static global SO factor into account whenever commanded to change the Speed (which is currently only possible from a GCode S Command which calls the "InvokeAction S" call).
>  
> The GUI can read this UserData variable and display the current SO continuously on the screen as well as the Currently Commanded Spindle Speed.  If we make the UserData variables two of the 8 that are continuously uploaded with the BulkStatus then it won't require separate reads through he USB. 
>  
> If the Operator changes the SO the App would write the changed value to the KFLOP variable first, then also do an InvokeAction S call.
>  
> Any KFLOP User program could also change the SO variable and execute equivalent InvokeAction S code to alter the Spindle speed in response to a button or Pot change.
>  
> A KFLOP CSS program could likewise detect changes in the cutting radius and execute equivalent InvokeAction S code factoring in the Curr Commanded Speed, SO, and the Radius.
>  
> Any thoughts?
>  
> One thing I don't see how to do is reconcile an external Pot position with a GUI Slider.  Moving the Pot would update the GUI slider to stay in sync, but moving the slider can't physically move the Pot.  Anyone know how this is normally done?  I guess it has to be one or the other.
>  
> Thanks
> TK 
>  
>  
>
> From: bradodarb <bradodarb@...>
> To: DynoMotion@yahoogroups.com
> Sent: Friday, November 18, 2011 2:23 PM
> Subject: [DynoMotion] Re: Feedrate Override Resolution.
>
>
>  
> Looking thru the KMCNC app, I think no feedrate override == 1.0.
>
> I can adjust accordingly.
>
> I am still not sure how to implement a general purpose spindle override routine, and would be eager to hear anyone's suggestions
>
> -Brad Murry
>
> --- In DynoMotion@yahoogroups.com, "bradodarb" <bradodarb@> wrote:
> >
> > Hello Tom,
> >
> >
> > I am trying to get the beta Machine Manager's CNC buttoned up and some of the remaining functionality I have some questions with.
> >
> >
> > #1) Interpreter.CoordMotion.SetFeedRateOverride(args...)
> >
> > What are valid ranges? is 1 = to 100% or do I need to pass in 100?
> >
> >
> > 2#) What is a good clean way to implement spindle override?
> >
> > My initial thoughts were to query the interpreter's requested S value, then based on user input change the pwm/analog out via script command or compile and run a c prog
> >
> > What are your thoughts?
> >
> > -Brad Murry
> >
>